home *** CD-ROM | disk | FTP | other *** search
- System 4.1 Programmers' Notes (2 of 2, 28K)
-
- System 4.0 to System 4.1 Change History
-
- This document outlines developer visible changes to the System Tools
- disk 2.0 and Utilities disk 2.0. This includes changes to System 4.1 and
- Finder 5.5 and related files, and is a summary based on engineers' release
- notes. This information is in no way guaranteed to be accurate or
- complete.
-
- Copyright Apple Computer, Inc. 1987 All Rights Reserved.
-
- Part 2 of 2
-
- 'INIT' (31, SysHeap, Locked) [420]
- A New, Improved INIT 31
-
- Apple's INIT 31, used for loading and executing INIT
- resources from files of type INIT or RDEV in a boot disk's
- system folder, has been made more sensitive to system
- heap space requirements of INITs. In the discussion that
- follows, we refer to INIT/RDEV files as RDEVs.
- When an RDEV is opened by INIT 31, a resource of type
- 'sysz' (for "system zone size") and ID 0 is sought. The
- first longword of sysz 0 will specify how much
- contiguous system heap space is required by that RDEV.
- INIT 31 will _SetApplBase as appropriate to meet the
- need.
- Then as each successive INIT from the RDEV is loaded and
- executed, INIT 31 will guarantee at least 16KB contiguous
- free space in the system zone. This should accommodate
- all of today's RDEVs, which of course cannot benefit from
- the newfangled 'sysz'.
- Here is a simple rez definition for a 32Kb sysz request:
- type 'sysz' { longint; };
- resource 'sysz' (0) { $8000 };
- Implementation note: Of course, whenever _SetApplBase
- is performed, INIT 31 must close and reopen the RDEV,
- since its map lies in the application zone. INIT 31 will
- ensure that each INIT will be executed just once,
- regardless of the finagling done with the host RDEV.
- 16K minimum in system heap even if no RDEV, INIT, CDEV
- files. Also look for CDEV files too.
- 'INIT' (35, SysHeap, Locked) [358]
- This code is the RAM cache loader. It 1) Allocates cache
- locals. 2) Intercepts Segloader hook. 3) Loads RAM cache
- when appropriate. 4) Provides code to reinstall old cache.
- 'INIT' (4, SysHeap, Locked) [492]
- This resource contains the core routine pertaining to the
- shutdown trap.
- INT#
- 'INT#' (-15872) [12]
- INTL
- These are the international parameter blocks for backwards
- compatibility with applications that access them directly.
- 'INTL' (0, "US", Purgeable) [32]
- 'INTL' (1, "US", Purgeable) [332]
- 'INTL' (2, "US", Purgeable) [28]
- Sorting Hooks -- These consist of a table of six words,
- which are offsets to various hook routines. Each routine
- is called with no arguments, and returns no result, but
- they do have access to the local variables which are set
- up by the International Utilities Package. These routines
- can be used to modify the sorting algorithm for different
- languages.
- KCAP
- Keycaps default
- 'KCAP' (-15936) [18]
- KCHR
- Char code to ascii definitions
- 'KCHR' (0, "US", SysHeap, Locked) [1386]
- This is the keyboard layout resource.
- KMAP
- ADB Keyboard communication driver
- 'KMAP' (0, SysHeap, Locked) [134]
- Standard keyboard
- 'KMAP' (2, SysHeap, Locked) [144]
- Saratoga keyboard
- KSWP
- 'KSWP' (0, SysHeap) [16]
- This resource is a table that determines which keyboard
- combinations will affect the current keyboard script. It
- consists of one or more entries and is terminated by an
- entry of all zeros. Each entry is three bytes long: The
- first byte is a virtual key code, the second a bit mask for
- the modifiers keys, and the third the script number to
- toggle to. For example: If you want the keyboard script
- to change to Roman when you type command-space, you
- would have an entry with the virtual key code of the
- space bar (49), a bit mask specifying only the command
- key (256), and the Roman script code (0). Note that the
- bit mask is the same as the modifier bits in a standard
- event record.
- MBDF
- 'MBDF' (8, SysHeap, Locked) [3348]
- This is the new menu bar defproc that handles all of the
- menu drawing functions that were previously in the Menu
- Manager. It draws the menu bar, hilites menu titles,
- saves the bits behind a menu, draws the menu structure,
- as well as other menu bar tasks. This defproc is defined
- in Inside Macintosh Volume V.
- MDEF
- 'MDEF' (0, Purgeable) [3398]
- This is the standard text menu defproc. This defproc now
- supports color and hierarchical menus.
-
- MacPlus and SE:
- - Hierarchical menus have been added. As a result every
- menu manager routine has been patched.
- - Popup menus have been added.
- - Universal MDEF has scrolling menus which have two
- speeds depending on how far mouse in moved "into" the
- scroll bar.
- - Universal MBDF
-
- Mac II:
- - Uses Universal MDEF
-
- Change Summary:
- MDEF and MBDF defprocs have been made universal so they
- work on MacPlus, MacSE and Mac II.
- Scrolling Menus have two speeds, slow and fast,
- depending on how far mouse is "into" the scroll arrow.
- Add scrolling indicator to top and bottom of scrollable
- menus.
- Recursively defined hierarchical menus now cause a
- SysError 86 instead of a SysError -127. No SysError box
- wold be drawn with the -127
- Missing MBDF causes SysError 85 instead of previous
- value -126
- On MacPlus HiliteMenu now saves and restores the pen
- state instead of just doing pen normal.
- When a hierarchical menu is selected, the MenuID and
- Item are now properly returned to the active desk
- accessory. Similarly, when a command key that belongs
- to a hierarchical menu is selected, the DA now gets it
- properly.
- Delete from hierarchical menus first then from regular
- menus rather than vice-versa. This way a desk accessory
- can call DeleteMenu without worrying whether the
- application had regular menus that are numbered the same
- as its (the DA's) hierarchical menus. DA's must remove
- their hierarchical menus each time they are deactivated,
- and so need to call DeleteMenu without having to worry
- whether there are any numbering problems.
- PACK
- 'PACK' (12, Purgeable) [9792]
- Color Picker Package --
- 'PACK' (3, Purgeable) [7702]
- Standard File Package -- Provides a standardized
- get/put file dialog for use by applications.
- Command-. is now equivalent to the cancel button.
- When creating the file list, files are added until fnfErr
- (file not found). Previously, the DrNmFls (number of files
- in directory) field was used which isn't always correct in
- a changing (file server/Switcher) environment.
- Fixed bug #6646 which ignored error form OpenWD caused
- by running out of working directories.
- HGetState and HSetState are used on 128K and later ROMs
- Fixed bug which caused strange problems when an
- UNFORMATTED disk is inserted AND ejected while
- Standard File is visible.
-
- Fixed Occasional trashing of location 0 bug.
- Fixed not clearing typeahead when opening directory.
- 'PACK' (6, Purgeable) [1796]
- International Utilities Package -- Date, Time and
- Sorting Routines for language independent programs.
- These routines help maintain international parameter
- blocks as resources of type 'itl_' where the last character
- is a digit (0 through 9).
- Bug fixes made to the _ScriptUtil dispatching mechanism.
- The dispatching tables were compressed to save space.
- The Pixel2Char and FixSpExtra routines were changed to
- improve performance.
- A bug was fixed in the DrawMenuBar patch so the script
- icon would only be drawn when two or more script
- interface systems were installed and enabled.
- Several changes were made to the Roman utilities to
- conserve space.
- Fixed ExpandMem usage
- Made sysFontFam handling more general
- Change allocation from above bufptr to sysHeap.
- Replaced various resource type constants with literals.
- Added an extension block to low-memory.
- TestMetric: Fixed MacPlus bug with leaving PACK 6
- locked
- GetIntl: Fixed B4 bug with unlocking PACK 6 prematurely
- Fixed the BMI in the TestMetric, and the CLR.L in the
- GetTheIntl to unlock properly.
- A new hook was added to the existing sorting hooks in the
- "it/2" parameter block.
- Changes were made for compatibility with future
- processors.
- Changes were made for compatibility with future memory
- management schemes.
- 'PACK' (7, Purgeable) [1350]
- Contains LBin2Dec and LDec2Bin code from the original
- Pack 7 and new code for _Cstr2dec, _pstr2dec, and
- _dec2str.
- PTCH
- Modified disk switch alert to post an update if the
- mainscreen is not in 1-bit mode. This patches DskSwtchHook
- in the lo-mem- not a trap!
- Added additional code to DSHook to test screen mode (of
- mainscreen where the dialog appears). If it is not in 1-bit
- mode, just post an update event for this part of the screen.
- I've put stuff in here so that a pixmap can be made on the
- stack to save in the other modes to, if I can get that done on
- time.
- Fixed MountPatch (#17) to save ExtFSHook and to call other
- routine in that chain.
- The complete palette manager is now patched into Macintosh II.
- This essentially allows applications to display windows
- simultaneously
- even though those windows do not all use the same 256
- colors. It causes windows that are not selected to "Make do"
- with colors that are available in the color table of the
- selected window.
- Fixed bug related to absolute mouse movement.
- Restore curMap before jumping into the print code.
- Store the print error in low memory after _PrDrvrOpen call
- under PrintOpen. This is so that the application gets correct
- error back from PrOpen.
- Save curMap in a3 before the first _GetResource call.
- Changed PutSytlScrap to TEStylInsert. (Interface is
- different)
- Added TEGetHeight trap through TEDispatch.
- Modified SetStylHandle to dispose of style handle before
- replacing it.
- When addSize is being done by TESetStyle, if the point size
- becomes less than or equal to 0, then the point size is set to
- 1. Previously it would crash in TEX if you tried to do this
- The following bug fixes all have to do with the use of
- pointers to unlocked records. These bugs were all discovered
- by TEX. These are all situations in which the record is
- unlocked, a trap occurs which may result in memory moving
- around, and upon return TE attempts to use the now possibly
- invalid pointer. The bugs fixed are as follows:
- Reset value of A0 pointer on stack in GetDefStyle.
- Locked temp scrap handle before calling PutScrap.
- Dereferenced style pointer again after TextWidth call.
- Relocked text handle after Munger call.
- 5 saved style handle as offset over DrawText call.
- Finally fixed measurement bug in RangeRect
- Set txMode from TERec.teMode in StdEntry for records
- created by TEStylNew as well as the old TERecs.
- Fixed FindLine to check for a CR at the end of a string of
- unwrapped blanks. This fixed a bug.
- TEAutoView was patched to handle right justified text when
- it is called by the Dialog Manager. This fix was for ROM76fix
- only, since it has been fixed in the new Dialog Manger in the
- Macintosh II's ROM.
- TextBox was patched to take teSysJust into account, and to
- reset the input justification from teJust if the call is from
- the Dialog Manager (which just sets left justification no
- matter what).
- TrimMeasure was patched to check if justification is
- teForceLeft when the calling routine is DoJust. If so, we
- jump back to DoJust to force the left justification.
- TEPinScroll was patched to fix a scrolling problem which
- apparently also existed in the Mac+. It can cause your text to
- be scrolled OFF the screen, instead of onto it, which is
- usually the desired effect.
- All of TextEdit, which also includes the fixes listed below,
- was patched into the Mac+ system.
- TEAutoView was patched to handle right justified text when
- it is called by the Dialog Manager. This fix was for
- /ROM76fix only, since it has been fixed in the new Dialog
- Manager in the Macintosh II's ROM.
- TrimMeasure was patched to check if justification is
- teForceLeft when the calling routine is DoJust. If so, we
- jump back to DoJust to force the left justification.
- TEPinScroll was patched to fix a scrolling problem which
- apparently also existed on the Mac+. It can cause your text
- to be scrolled OFF the screen, instead of onto it, which is
- usually the desired effect.
- RecalLines was patched to fix an obscure bug caused during
- recalibration when TextEdit accesses a value outside the
- linestarts array (i.e., garbage) by mistake. This could happen
- at some totally unpredictable time when the linestarts are
- being recalibrated. It was discovered by MacApp.
- All of TextEdit patched into Mac+. TEPatch.a, which is
- identical to the Macintosh II's BETA6 version of TextEdit, has been
- included in the ROM75fix.a patch.
- A TextEdit bug was fixed which occurred as follows: Type 5
- to 10 lines all ending in carriage returns. Select a few
- characters in the middle of one of the lines. Type carriage
- return. The characters following the carriage return just
- typed would appear on the next line, overwriting the
- characters on the next line (that line and all following it
- should have been moved down, actually).
- Patch GetNewControl to fix first instruction, that is, patch
- to use even-sized stack frame.
- Patched FindLine to fix recal delete bug.
- Jam system version number to its rightful home in
- SysVersion
- Avoid hitting HwCfgFlags on ROM69 machines when
- installing SCSI patch.
- New SysEnvirons Trap: SysEnvirons -- an environs call --
- Thanks to JTC for "Mac Variants".
- The parity checking which was added with change number
- was taken back out.
- MapFBlock patch: this patch fixes a problem which was
- trashing the extent file. MapFBlock was adding a word value
- rather than a long word value during the calculation of
- starting logical block number. This resulted in a
- wrap-around of the block number (modulo 64K). Since the
- extent file resides at allocation block zero, it was the first
- file to be trashed. This patch applies to the MacPlus ROM (75)
- only. A separate patch is used for (ROM76-78) and lives in
- the ROMAllFix file.
- For system heaps larger than 58k, rom69patch needed to
- move to boot code (the boot code is loaded in at $10000).
- SInce the boot code has moved, the return address on the
- stack should be modified. Of you change the nature of the
- stack - which rom69fix depends on - you must also modify
- rom69fix.a.
- Ensure sufficient sys heap space before loading patches,
- using SizeResource to figure the local min. Then guarantee
- MinSysExtra space after loading last one. Code borrowed
- from INIT=31.
- The algorithm that S115 used to grow the heap was to
- enlarge the heap by 16k or the size of the patch - whichever
- was bigger. What you really want is 16k free in addition to
- the size of the patch.
- On 64k ROMs be sure not to use nonexistent traps (such as
- SizeRsrc) or resize heap (since boot blocks are loaded at
- 64k).
- Removed FKEY changes to GetNextEvent filter for Macintosh SE.
- Changed in January. It now saves one more long onto the
- stack. So, we need to move one more long from the old stack
- to the new stack.
- Changes: Changed Prime Time to improve accuracy & rolled
- in all previous corrections form the latest (Macintosh II/
- Macintosh SE) version. Also made one small change to the
- interrupt handler.
- SCSI
- The Select timeout has been increased to the recommended
- value of 250 milliseconds. The TIB interpreter loop has also
- been tightened up.
- Three new routines have been added: SCSISelAtn (select
- with attention), SCSIMsgIn (message in), and SCSIMsgOut
- (message out). These were functions that were included in
- the Macintosh II's and Macintosh SE Roms.
- The timeout between the selection and command phases int
- he Macintosh SE SCSI Manager has been increased from 16
- milliseconds to 256 milliseconds.
- Modified Jcursrtask to look at the low memory globals of
- MTEMP and RAWMOUSe so that third-party developers of
- tablet-like hardware can simply modify those low memory
- globals and Jcursrtask will pick those values up and move
- the mouse directly there.
- Patched FixMul so that CharExtra works with negative input
- values.
- ValidREct - patched ValidRect to restore register clobbered
- by DrawItem in SetIText
- Load Resource - if fast path fails because of disk switch,
- recover with panache.
- Patched StretchBits to reverse order of draw for shadowed
- text.
- If NBP completion routine made another NBP call, it was
- possible for other current NBP calls never to complete.
- Patch is to Vinstall.
- PTCH
- 'PTCH' (0, SysHeap, Locked) [540]
- Rom Patches for all machines.
- Added code to allocate extended memory for international
- folks.
- This patch permits external file systems to handle
- non-Macintosh volumes on disk drives designated for
- Macintosh volumes. The patch checks for a "NoMacDisk"
- error returned from a MountVol and calls the external file
- system defined by the contents of "toExtFS" global in low
- memory.
- 'PTCH' (105, SysHeap, Locked) [5696]
- Mac 512K Rom Patches.
-
- 'PTCH' (117, SysHeap, Locked) [26832]
- Mac Plus Rom Patches.
- Fixed register conflict in System Event Task
- Fix FixRound, Fix2Long,Frac2Fix at last.
- Fix FixDiv/FracDiv, and StripAddress.
- 'PTCH' (376, SysHeap, Locked) [11862]
- Mac II Rom Patches.
-
- 'PTCH' (630, SysHeap, Locked) [12900]
- Mac SE Rom Patches.
- ROv#
- Rom Override mechanism.
- The ROM .Print resource in ROM75 needs to be overriden by
- the .Print resource in the system file with ROVR.
- 'ROv#' (117, Purgeable) [16]
- Rom Overrides for the Mac Plus.
-
- 'ROv#' (376, Purgeable) [10]
- Rom Overrides for the Mac II.
-
- 'ROv#' (630, Purgeable) [10]
- Rom Overrides for the Mac SE.
- ROvr
- 'ROvr' (0, Purgeable) [180]
- SICN
- 'SICN' (-15872) [192]
- 'SICN' (0, Purgeable) [32]
- This is the (Roman) script symbol that is drawn in the
- upper-right hand corner of the menu bar.
- WDEF
- 'WDEF' (0, Purgeable) [2142]
- The standard document window defproc. It has been
- modified to dynamically identify the capabilities of the
- system that it is running on and on ColorQD equipped
- systems, it supports drawing window structures in color.
- Like all standard defprocs in this release, it can be
- identified with version 10.
-
- 'WDEF' (1, Purgeable) [1270]
- This is the standard rounded-corner window defproc (as
- used by the calculator). Like WDEF 0, it is a universal
- defproc that can be used on all Macs. It also has a version
- number of 10.
- boot
- 'boot' (1) [1024]
- Copy of boot blocks.
- cctb
- 'cctb' (0) [40]
- This is the system default control colorTable. The colors
- contained in this resource describe the colors that will
- be used to draw default buttons and scroll bars. It is
- duplicated in ROMResources. The data format is described
- in Inside Macintosh Volume V.
- cicn
- 'cicn' (31, "Cool Mac", Preload) [906]
- Color Mac Icon
- clst
- 'clst' (-15808) [1622]
- 'clst' (-15904) [824]
- dctb
- 'dctb' (-15808) [48]
- Color dialogs owned by the Control Panel (DRVR 18).
-
- 'dctb' (-5760) [48]
- Color dialogs owned by the Color Picker Package (Pack
- 12).
- finf
- 'finf' (-15808, Purgeable) [14]
- 'finf' (-15904, Purgeable) [14]
- it10
- 'itl0' (0, "US", Purgeable) [32]
- it11
- These resources contain the same information as the old
- large international parameter block (INTL 1). It is used by
- the International Utilities Package for the the names of the
- days and months.
- 'itl1' (0, "US", Purgeable) [332]
- it12
- These resources contain the sorting hooks for the
- International Utilities Packages Sorting Routines.
- 'itl2' (0, "US", Purgeable) [28]
- it13
- These are the script bundles for the various script interface
- systems that a Mac can have installed. Each consists of ten
- integers, which are the resource ID numbers of various
- resource types that are necessary for the given script to run
- on the Mac. The first three values are the ID numbers of the
- other international resources (itl0,itl1,and itl2) and the last
- two numbers of the small icon (type SICN) and the keyboard
- layout resource (type KCHR).
- 'itlb' (0, "Roman", Purgeable) [20]
- itlc
- This is the international configuration resource for the
- Script Manager. It currently holds three integer values: The
- system script number, a set of flags, and the size of the
- maximum size of a keyboard layout resource (KCHR).
- 'itlc' (0, SysHeap, Purgeable) [6]
- This resource is used at boot time to configure the Script
- Manager, and is subject to future changes.
- lmem
- 'lmem' (117, Purgeable) [92]
- 'lmem' (376, Purgeable) [98]
- mcky
- 'mcky' (0, Purgeable) [8]
- 'mcky' (1, Purgeable) [8]
- 'mcky' (2, Purgeable) [8]
- 'mcky' (3, Purgeable) [8]
- 'mcky' (4, Purgeable) [8]
- mitq
- 'mitq' (0, Purgeable) [12]
- A new resource type is added. This is the 'mitq' which
- carries information for MakeITable about how much
- memory to allocate for internal temporary structures. It
- consists of 3 longwords which give the desired size in
- bytes, for a temporary queue. The 3 longs are the size in
- 3-bit resolution, 4-bit res, and 5-bit res respectively.
- Note that in the ROMResources virions, the purge bit is
- not set; in the system disk version, purge IS set.
- nrct
- 'nrct' (-15904, Purgeable) [82]
- ppat
- 'ppat' (16, Purgeable) [200]
- snd
- Digitized sound recordings.
- 'snd ' (1, "Simple Beep") [228]
- 'snd ' (2, "Clink-Klank") [11206]
- 'snd ' (3, "Bong") [7829]
- 'snd ' (4, "Monkey") [2208]
- snth
- 'snth' (1, Purgeable) [1176]
- 'snth' (3, Purgeable) [1326]
- 'snth' (5, Purgeable) [2026]
- 'snth' (7, Purgeable) [1566]
- 'snth' (9, Purgeable) [1286]
- wctb
- 'wctb' (0) [48]
- This is the system default window colorTable. The colors
- contained in this resource describe the colors that will
- be used to draw default window structures (the
- appearance was an exact match of the Macintosh
- windows). It is duplicated in ROMResources. The data
- format is described in Inside Macintosh Volume V.
-
- Update Folder:
-
- Read Me
- When you find a Read Me document in an Update Folder,
- TeachText is the application you'll use to read it. This Read Me
- document contains information about some enhancements to
- system software:
-
- * Find File has a Move to Desktop command.
- * LaserWriter and Laser Prep, version 4.0, offer new options.
- * Easy Access facilitates one-handed typing and has a mouse
- keys feature.
-
- 100,102,200,202,300,302,500,502,600,602,700,702
-